#/bin/bash
#Variaveis do programa
DATABASE=$(cat conf/database)			#contem o caminho para a base de dados
FIFONAME="fifo/tmp-mysql-wlan_IC-$$"		#FIFO que estaremos utilizando

echo "== SNMPGrab == Augusto G. Andreollo"
echo "Script para obtencao de dados do AP \"WLAN_IC\"(10.1.1.249)"

#prepara o script para interceptar os comandos de interrupcao
trap "x=1" SIGINT
x=0

#cria um fifo para poder utilizar a base de dados em modo "persistente"
echo "Criando FIFO para acesso a base de dados"
mkfifo $FIFONAME

#abre a conexao propriamente dita com a base de dados
echo "Criando conexao com a base de dados ($DATABASE)"
cat <> $FIFONAME | mysql -h $DATABASE -u @ testes_alvarion &
sleep 5

echo "É necessario que o Linktest seja ativado? (S/N)"
read resposta
if [ ${resposta} = "s" ]
then
	#ativa o linktest no AP
	echo "Ativando linktest no AP"
	snmpset -v 2c -c wcnintel 10.1.1.249 .1.3.6.1.4.1.11898.2.1.11.4.0 i 2
fi
 
#aguarda o linktest se iniciar
echo "Aguarde, iniciando..."
usleep 5000000

#ve quais estacoes estao ativas (pelos enderecos mac) e da a escolha ao usuario
echo "Por favor, escolha qual a placa que deseja monitorar:"
snmpwalk -v 2c -c wcnintel 10.1.1.249 .1.3.6.1.4.1.11898.2.1.11.5.1.4 | cut -b 44-
read placa

#indica o inicio do processo de medicao
echo "Medicao iniciada, se nenhum erro ocorrer,"
echo "os dados estao sendo escritos no banco de dados (10.1.1.98)"
#mostra na tela o que estamos capturando...

echo "Timestamp,MACAddr,APSignal,ApNoise,APSNR,APLowFrame,APStdFrame,APMedFrame,APHighFrame,CliSignal,CliNoise,CliSNR,CliLowFrame,CliStdFrame,CliMedFrame,CliHighFrame"

#loop principal do programa...
while [ ${x} -eq 0 ]
do
	#pega os valores desejados..
	#..gerais
	timestamp=$(date +%Y%m%d%H%M%S)
	CliMAC=$(snmpget -Ov -Oq -v 2c -c wcnintel 10.1.1.249 .1.3.6.1.4.1.11898.2.1.11.5.1.4.${placa} | cut -b 2-3,5-6,8-9,11-12,14-15,17-18)
	#..do servidor
	APSNR=$(snmpget -Ov -Oq -v 2c -c wcnintel 10.1.1.249 .1.3.6.1.4.1.11898.2.1.11.5.1.8.${placa})
	APSignal=$(snmpget -Ov -Oq -v 2c -c wcnintel 10.1.1.249 .1.3.6.1.4.1.11898.2.1.11.5.1.6.${placa})
	APNoise=$(snmpget -Ov -Oq -v 2c -c wcnintel 10.1.1.249 .1.3.6.1.4.1.11898.2.1.11.5.1.7.${placa})
	
	APLowFrame=$(snmpget -Ov -Oq -v 2c -c wcnintel 10.1.1.249 .1.3.6.1.4.1.11898.2.1.11.5.1.15.${placa})
	APStdFrame=$(snmpget -Ov -Oq -v 2c -c wcnintel 10.1.1.249 .1.3.6.1.4.1.11898.2.1.11.5.1.16.${placa})
	APMedFrame=$(snmpget -Ov -Oq -v 2c -c wcnintel 10.1.1.249 .1.3.6.1.4.1.11898.2.1.11.5.1.17.${placa})
	APHigFrame=$(snmpget -Ov -Oq -v 2c -c wcnintel 10.1.1.249 .1.3.6.1.4.1.11898.2.1.11.5.1.18.${placa})
	
	#..do cliente
	CliSNR=$(snmpget -Ov -Oq -v 2c -c wcnintel 10.1.1.249 .1.3.6.1.4.1.11898.2.1.11.5.1.21.${placa})
	CliSignal=$(snmpget -Ov -Oq -v 2c -c wcnintel 10.1.1.249 .1.3.6.1.4.1.11898.2.1.11.5.1.19.${placa})
	CliNoise=$(snmpget -Ov -Oq -v 2c -c wcnintel 10.1.1.249 .1.3.6.1.4.1.11898.2.1.11.5.1.20.${placa})
	
	CliLowFrame=$(snmpget -Ov -Oq -v 2c -c wcnintel 10.1.1.249 .1.3.6.1.4.1.11898.2.1.11.5.1.28.${placa})
	CliStdFrame=$(snmpget -Ov -Oq -v 2c -c wcnintel 10.1.1.249 .1.3.6.1.4.1.11898.2.1.11.5.1.29.${placa})
	CliMedFrame=$(snmpget -Ov -Oq -v 2c -c wcnintel 10.1.1.249 .1.3.6.1.4.1.11898.2.1.11.5.1.30.${placa})
	CliHigFrame=$(snmpget -Ov -Oq -v 2c -c wcnintel 10.1.1.249 .1.3.6.1.4.1.11898.2.1.11.5.1.31.${placa})

	#mostra eles na tela
	echo "${timestamp},${CliMAC},${APSignal},${APNoise},${APSNR},${APLowFrame},${APStdFrame},${APMedFrame},${APHigFrame},${CliSignal},${CliNoise},${CliSNR},${CliLowFrame},${CliStdFrame},${CliMedFrame},${CliHigFrame}"
	#e joga eles na base de dados
	echo "INSERT HIGH_PRIORITY INTO \`wlan_ic_status\` () VALUES (NULL, NOW(), '${CliMAC}','${APSignal}','${APNoise}','${APSNR}','${APLowFrame}','${APStdFrame}','${APMedFrame}','${APHigFrame}','${CliSignal}','${CliNoise}','${CliSNR}','${CliLowFrame}','${CliStdFrame}','${CliMedFrame}','${CliHigFrame}');" > $FIFONAME
	#completa 1 segundo antes de repetir
	usleep 100000
done

#matando o processo do CAT original...
echo "Finalizando conexao com a base de dados"
kill -9 `ps | grep cat | cut -b 1-5`

#remove o fifo que criamos inicialmente
echo "Removendo FIFO"
rm -rf $FIFONAME

#that's all, folks!
echo "Script finalizado com sucesso!"
exit 0
